#include "iostream"
using namespace std;

//求圆的面积
//用面向过程的方法求解圆的面积
// << >> 不会用 : 标准输入cin和标准输出cout 始终写在操作符的左边
int main01(int argc, char const *argv[]){
	double r = 0;
	double s = 0;
	
	cout<<"请输入圆的半径:";
	
	//cin 代表标准输入 代表键盘
	cin>>r;

	cout<<"r的值的是:"<<r<<endl;

	s = 3.14*r*r;
	cout<<"圆的面积是s:"<<s<<endl;

        return 0;
}

//在c++中 定义了一个自定义数据类型
struct Circle{
	double m_s;//圆的面积
	double m_r; //圆的半径
};

//在c++中 定义了一个自定义数据类型
class MyCircle{
public:
	double m_s;//圆的面积 属性 成员变量
	double m_r;//圆的半径 
public:
	void setR(double r){ //成员函数
		m_r = r;
	}
	double getR(){//成员函数
		return m_r;
	}
	double getS(){
		m_s = 3.14*m_r*m_r;
		return m_s;
	}
};

//面向对象的方法
//1.类的抽象 成员变量和成员函数
//2. 实例化 类的对象
//3. 求面积
	//面向过程加工的是 一个一个的函数
	//面向对象加工的是 一个一个的类
//4. mian集成

//思考:类的调用 执行过程分析==>类代码一步一步执行
//类是一个数据类型(固定大小内存块的别名); 定义一个类,是一个抽象的概念,不会给你分配内存
//用数据类型定义变量的时候,才会分配内存
int main02(int argc, char const *argv[]){
	MyCircle c1, c2, c3; //用类 定义 变量 对象
	double r;
	cout<<"请输入c1圆的半径:";
	cin >> r;

	//给c1圆的属性赋值
	c1.setR(r);
	

	cout<<"c1圆的面积是:"<<c1.getS()<<endl;
	
	return 0;
}
//
int main(int argc, char const *argv[]){
	MyCircle c1, c2, c3; //用类 定义 变量 对象
	double r1, r2, r3;

	//圆形c1
	cout<<"请输入c1圆的半径r1:";
	cin >> r1;
	//给c1圆的属性赋值
	c1.setR(r1);
	cout<<"c1圆的面积是:"<<c1.getS()<<endl;	

	//圆形c2
	cout<<"请输入c2圆的半径r2:";
	cin >> r2;
	//给c2圆的属性赋值
	c2.setR(r2);
	cout<<"c2圆的面积是:"<<c2.getS()<<endl;	

	return 0;
}

//问题抛出 c++编译器如何处理 多个对象,调用类的成员函数
//1.c++编译如何区分c1对象,c2对象,c3对象 调用了类的方法
//2.class类是一个数据类型和对象 1:n关系
//3.学习c++的方法是和面向过程是不一样...